home *** CD-ROM | disk | FTP | other *** search
/ The CICA Windows Explosion! / The CICA Windows Explosion! - Disc 2.iso / programr / ppage111.zip / POWERPG.TXT < prev    next >
Text File  |  1995-05-27  |  50KB  |  1,197 lines

  1. Power Page v1.11
  2. Copyright by Ron Tanner, 1995 / All rights reserved.
  3. Compuserve# 75170,776
  4. Internet:   75170.776@compuserve.com
  5.  
  6. What is Power Page?
  7. -------------------
  8.  
  9. Power Page is a Windows DLL that allows you to send Alpha-numeric
  10. (full text) messages to pagers.  You can integrate the power of paging
  11. into your application easily with a single function call from virtually
  12. any language including:
  13.  
  14.      PowerBuilder
  15.      Microsoft Access
  16.      FoxPro 
  17.      Dbase for Windows
  18.      C / C++
  19.      Paradox for Windows
  20.      Visual Basic
  21.       Delphi
  22.      or any language or tool that supports calling DLL functions.
  23.  
  24. A DOS Version with CLIPPER / C examples is available separately.
  25.  
  26. The DLL function is defined as follows:
  27.   send_alpha_page(port, baud, modem_init_str, modem_dial_str,
  28.                   access_number, pager_id, max_chars_per_blk,
  29.                   msg, debug_file, retmsg)
  30.  
  31. Alternatively, you may use the extended call:  (REGISTERED VERSION ONLY)
  32.   PowerPage(port, baud, modem_init_str, modem_dial_str,access_number,
  33.             pager_id, max_chars_per_blk, msg, debug_file, retmsg,
  34.             line1, line2, line3, minimize)
  35.  
  36. By making this simple call, you can send a message to anyone anywhere.
  37.  
  38. NOTE:  THE UNREGISTERED VERSION OF THIS SOFTWARE LIMITS THE MESSAGE
  39.        TO 40 CHARACTERS.  THE REGISTERED VERSION ALLOWS FOR AN UNLIMITED
  40.        MESSAGE SIZE.
  41.  
  42. You could use Power Page to:
  43.      Send Time-critical information.
  44.      Notify support technicians of an error or warning.
  45.      Integrate messaging into your application.
  46.      Send alerts or reminder notes. (Wake up calls)
  47.      Send scheduling or meeting notices.
  48.      Provide customers an easy way to ask technical support questions.
  49.      Integrate with dispatch applications.
  50.  
  51. Power Page makes paging integration a cinch!
  52.  
  53.  
  54. What is required?
  55. -----------------
  56.  
  57.   Microsoft Windows 
  58.  
  59.   POWERPG.DLL installed in a directory on your path or the 
  60.   \WINDOWS\SYSTEM directory.
  61.  
  62.   A modem and phone line connected to the computer (COM1 - COM4)
  63.  
  64.   In addition, you will need to know some information about the
  65.   paging company and pager of the person you wish to send a message to.
  66.   This is described later.
  67.  
  68.  
  69. What does it cost?  (and ORDER information)
  70. -------------------------------------------
  71.  
  72. UNREGISTERED USERS:
  73.      This is not free software. The license allows you to use this software 
  74.      for evaluation purposes without charge for a period of 20 days.  If you 
  75.      use this  software after the 20 day evaluation period a registration fee 
  76.      is required. 
  77.  
  78. The cost of a licenses of Power Page is $25 (US) per license.  A license is
  79. for a single computer per the licensing terms stated below.  An unlimited
  80. royalty-free distribution license with source code is $300 (US).
  81.  
  82. Quantity discounts, site licenses, or custom modifications are also 
  83. available by contacting the author:
  84.  
  85.      Ron Tanner
  86.      4955 E. Preserve Court
  87.      Greenwood Village, CO  80121
  88.      Phone: 303-689-0720
  89.      Fax: 303-689-0730
  90.      Compuserve# 75170,776
  91.  
  92. To order, please call the author at the above number.  Charge cards are
  93. accepted. (Visa / MasterCard)
  94.  
  95. You may also charge it to your compuserve account. Just GO SWREG and  
  96. enter registration id# 4920.  You will receive your registered 
  97. version of the Power Page DLL via Compuserve e-mail within 48 hours.
  98.  
  99. UNREGISTERED USERS:
  100.      Please see the file ORDER.TXT for more information on how to order.
  101.  
  102.  
  103. What is the difference between the registered and unregistered version?
  104. -----------------------------------------------------------------------
  105.  
  106. The registered version offers the following enhancements:
  107.  
  108. 1.  The 40 character message limitation has been lifted.  You can send
  109.     a message up to 1000 characters long.  If the message is bigger
  110.     than the maximum characters per block limit of your paging company, then
  111.     Power Page will split the message up into multiple pages.
  112.  
  113. 2.  You may send multiple messages per call.  For example, if you want
  114.     to send a message to all the salesmen, this is possible now with
  115.     one phone call.  You do this by passing several pager id's and one or
  116.     several messages separated by the ^ (shift-6) character.
  117.  
  118. 3.  There is another function call in the DLL called PowerPage() that
  119.     has enhancements that allow you to control the pop up display.  You
  120.     have 4 more parameters.  The first three, you may pass text to be
  121.     displayed in the window (Rather than my annoying copyright).  The 
  122.     last parameter lets you run the power page window minimized to an
  123.     icon.  Please see the description of the PowerPage() below
  124.     documentation for more information.
  125.  
  126.  
  127. How do I Install Power Page?
  128. ----------------------------
  129.  
  130. To install Power Page, simply copy the POWERPG.DLL file to the 
  131. \WINDOWS\SYSTEM directory.
  132.  
  133.  
  134. What do I need to know about the Pager?
  135. ---------------------------------------
  136.  
  137. The only thing you need to know about the pager is the pager phone
  138. number or the Pager ID.  For example, I have a Motorola Advisor on
  139. Interlink Communications of Colorado.  The phone number to my pager
  140. is 8260590. (Do not pass a dash in the phone number when you call the 
  141. function)
  142.  
  143. You will need to know the following about the paging company of the
  144. pager. (In my case, the paging company is Interlink Communications):
  145.  
  146. 1.  Access Number.  You will need to know the paging terminals 
  147.     alphanumeric paging access telephone number.  This is the phone
  148.     number of the modem at the paging company that will receive the
  149.     message using the TAP protocol.  This number is the same for
  150.     everybody that has a pager from that company.  In my case, Interlink's
  151.     access phone number is 303-799-0055.  Many carriers will offer
  152.     800 numbers - especially the nationwide guys like SkyPage or Mobilcomm.
  153.  
  154. 2.  The baud rate.  You need to know the paging company's modem baud
  155.     rate associated with the access number.  Believe it or not, most
  156.     access modems still receive alphanumeric messages at 300 baud.
  157.     Many have "upgraded" to 2400 baud.  It doesn't really matter that
  158.     much what rate they have - pager messages tend to be relatively short
  159.     so the speed of transfer is not really that important.
  160.  
  161. 3.  Characters per message block.  Most paging carriers limit how many
  162.     characters can be sent in one message.  A lot of carriers limit the
  163.     message size to 80 characters.  Many others have expanded their 
  164.     service to 230 characters per message.  The size of message really
  165.     becomes a factor of the carrier.  You will need to find out this
  166.     information or learn this through trial and error.
  167.  
  168. 4.  Password?  Does your paging carrier require a password.  Most US 
  169.     companies DO NOT.  In this case, Power Page sends six zeros as the
  170.     password.  This is the standard way of doing it.  If do require a
  171.     special password, see the note under "access number" below.
  172.  
  173.     REGISTERED USERS NOTE:
  174.     You can send any size of message to Power Page.  Power Page
  175.     will automatically split them up into several messages to fit the
  176.     characters per message block.  Unregistered user's messages are
  177.     chopped off at 40 characters.
  178.  
  179.  
  180. What else do I need to know?
  181. ----------------------------
  182.  
  183. You will also need to know what port your modem is connected to.  You
  184. may need to know what kind of modem is attached and perhaps custom
  185. configure it by passing Power Page a modem initialization string.
  186.  
  187.  
  188. What is the format of the call?
  189. -------------------------------
  190.  
  191. There are two functions available in the DLL.
  192.     send_alpha_page()
  193.     PowerPage()  /* Registered Version Only */
  194.  
  195. --------------------------------------------------------------
  196.  send_alpha_page() Description
  197. --------------------------------------------------------------
  198.  
  199. The following describes the "send_alpha_page" function call:
  200.  
  201. Note: All strings must be ASCIIZ strings (Null Terminated)
  202.  
  203. int send_alpha_page(port,baud,modem_init_str,modem_dial_str,access_number,
  204.                     pager_id,max_chars_per_blk,msg,debug_file,retmsg)
  205.  
  206. char *port;              /* Port that modem is connected              */
  207. char *baud;              /* Baud rate of the paging company           */
  208. char *modem_init_str;    /* Any special setup string your modem needs */
  209. char *modem_dial_str;    /* Any special dial string your modem needs  */
  210. char *access_number;     /* The paging company's alpha access phone # */
  211. char *pager_id;          /* The pager phone number                    */
  212. char *max_chars_per_blk; /* The paging company's character limit / msg*/
  213. char *msg                /* The message to send to the pager          */
  214. char *debug_file;        /* If you have problems give this a file name*/
  215. char *retmsg;            /* The return message of how it went         */
  216.  
  217. Parameter                Description
  218. -------------------------------------------------------------------------
  219. port                     Specifies the port that your modem is connected 
  220.                          to.  This can be "COM1" through "COM4"
  221.  
  222. baud                     Specifies the baud rate that the paging company's
  223.                          alpha access port communicates at.  This can
  224.                          be any of the following: "300", "1200", "2400",
  225.                          "4800", "9600", "19200".  In very rare cases,
  226.                          I have seen the paging terminal require N,8,1
  227.                          rather than E,7,1. (Parity, data bits, stop bits)
  228.                          If this is the case, preceed the baud rate
  229.                          with an N. (ie "N300")
  230.  
  231. modem_init_str           Start off by leaving this string NULL.  If the 
  232.                          value is NULL, Power Page will send your modem
  233.                          an AT + a return.  The modem must then
  234.                          respond with an "OK".  If the default doesn't
  235.                          work, you will need to find the modem's manual
  236.                          and figure out a string that will work.  Any
  237.                          time you need a <cr> replace it with the tilde
  238.                          character (~) (ie. AT&F~)  If you need to pause,
  239.                          the hat character (^) will give you a 1 second
  240.                          pause. (ie. AT&F~^^AT~)  The maximum length of
  241.                          the modem initialization string is 80 characters.
  242.  
  243. modem_dial_str           Start off by leaving this string NULL.  If the
  244.                          value is NULL, Power Page will send your modem 
  245.                          an ATDT when it is ready to dial.  If only pulse
  246.                          dialtone is available, you will have to pass
  247.                          "ATDP" in this parameter.
  248.  
  249.  
  250. access_number            This is the telephone number for the paging
  251.                          company's modem that receives alphanumeric
  252.                          messages.  THIS IS DIFFERENT FROM THE PAGER
  253.                          TELEPHONE NUMBER.  You may include dashes and
  254.                          comma's like any other modem phone number. 
  255.                          (A comma usually pauses 2 seconds - ie 9,444-4444)
  256.                          (See above for more information)
  257.  
  258.                          Note: For those paging carriers that require
  259.                          a specific password, this is where you put it.
  260.                          After the access phone number place the ^ hat
  261.                          character (shift 6) and then place the password.
  262.                          For example, if the paging carrier required the
  263.                          password of L23456, then the access_number string
  264.                          would be: access_number$="9,444-4444^L23456"
  265.  
  266.                          By putting "DIRECT" in this string, Power Page
  267.                          assumes a direct connection.  No dialing takes
  268.                          place and DTR is NEVER dropped.
  269.  
  270. pager_id                 This is usually the pager's phone number or 
  271.                          PIN number.  DO NOT INCLUDE ANY DASHES in this
  272.                          number.
  273.  
  274.                          You may send multiple pages with one phone call.
  275.                          You do this by separating the pager_id's and 
  276.                          messages by the ^ (hat - shift 6) character.  For
  277.                          example, if I wanted to send myself two messages,
  278.                          I would set pager_id="8260590^8260590" and the
  279.                          msg field to msg="This is message 1.^This is 
  280.                          message 2".  Note: that there had better be the
  281.                          same number of ^ characters in the pager_id 
  282.                          field as there is in the message field.
  283.  
  284. max_chars_per_blk        This is the number of characters the paging 
  285.                          company allows per message block.  This number
  286.                          varies widely from company to company.  Some
  287.                          are as small as 60 characters and some are as
  288.                          big as 1000 characters.  The norms seem to be
  289.                          80 and 230 characters per block.  If the message
  290.                          you pass is bigger than the character per block
  291.                          limitation, Power Page automatically splits your
  292.                          message up into multiple blocks, so the recipient 
  293.                          gets the entire message. (Registered version only)
  294.                          However, he/she does get a different page for 
  295.                          each block. (See above for more information)
  296.  
  297. msg                      This is the message that goes to the pager.  The
  298.                          un-registered version truncates this message to
  299.                          40 characters.
  300.  
  301.                          Please note that you may send multiple messages
  302.                          separated by the ^ (hat - Shift 6) character.
  303.                          Please see pager_id description above for more
  304.                          information.  If you want to send the same
  305.                          message to the entire list of pagers, insert
  306.                          the single message and terminate it with ^^.
  307.                          (i.e. Msg$="Test Page^^")
  308.  
  309. debug_file               Normally, this parameter is NULL.  In the event
  310.                          you are having trouble successfully completing 
  311.                          a page, specify a valid file name for this
  312.                          parameter.  Power Page will append to the end
  313.                          of the file some information on where the 
  314.                          problem is.  This file will also help me to
  315.                          determine where the problem is if you want to 
  316.                          E-Mail me the file.
  317.  
  318. retmsg                   This is a string returned by Power Page telling 
  319.                          you what happened during the call.  See below
  320.                          for a complete description of the possible values
  321.                          in this string.  Make sure you pre-allocate 100
  322.                          bytes for this string BEFORE you make the function
  323.                          call.
  324.  
  325. --------------------------------------------------------------
  326.  PowerPage() Description    REGISTERED VERSION ONLY
  327. --------------------------------------------------------------
  328.  
  329. The following describes the "PowerPage" function call:
  330.  
  331. int PowerPage(port,baud,modem_init_str,modem_dial_str,access_number,
  332.               pager_id,max_chars_per_blk,msg,debug_file,retmsg,
  333.               line1,line2,line3,minimize)
  334.  
  335. Note: All strings must be ASCIIZ strings (Null Terminated)
  336.  
  337. char *port;              /* Port that modem is connected              */
  338. char *baud;              /* Baud rate of the paging company           */
  339. char *modem_init_str;    /* Any special setup string your modem needs */
  340. char *modem_dial_str;    /* Any special dial string your modem needs  */
  341. char *access_number;     /* The paging company's alpha access phone # */
  342. char *pager_id;          /* The pager phone number                    */
  343. char *max_chars_per_blk; /* The paging company's character limit / msg*/
  344. char *msg                /* The message to send to the pager          */
  345. char *debug_file;        /* If you have problems give this a file name*/
  346. char *retmsg;            /* The return message of how it went         */
  347. char *line1;             /* The text to display on line 1 of the box  */
  348. char *line2;             /* The text to display on line 2 of the box  */
  349. char *line3;             /* The text to display on line 3 of the box  */
  350. char *minimize;          /* Y to minimize window initially            */
  351.  
  352. Parameter                Description
  353. -------------------------------------------------------------------------
  354. port                     Specifies the port that your modem is connected 
  355.                          to.  This can be "COM1" through "COM9"
  356.  
  357. baud                     Specifies the baud rate that the paging company's
  358.                          alpha access port communicates at.  This can
  359.                          be any of the following: "300", "1200", "2400",
  360.                          "4800", "9600", "19200".  In very rare cases,
  361.                          I have seen the paging terminal require N,8,1
  362.                          rather than E,7,1. (Parity, data bits, stop bits)
  363.                          If this is the case, preceed the baud rate
  364.                          with an N. (ie "N300")
  365.  
  366. modem_init_str           Start off by leaving this string NULL.  If the 
  367.                          value is NULL, Power Page will send your modem
  368.                          an AT + a return.  The modem must then
  369.                          respond with an "OK".  If the default doesn't
  370.                          work, you will need to find the modem's manual
  371.                          and figure out a string that will work.  Any
  372.                          time you need a <cr> replace it with the tilde
  373.                          character (~) (ie. AT&F~)  If you need to pause,
  374.                          the hat character (^) will give you a 1 second
  375.                          pause. (ie. AT&F~^^AT~)  The maximum length of
  376.                          the modem initialization string is 80 characters.
  377.  
  378. modem_dial_str           Start off by leaving this string NULL.  If the
  379.                          value is NULL, Power Page will send your modem 
  380.                          an ATDT when it is ready to dial.  If only pulse
  381.                          dialtone is available, you will have to pass
  382.                          "ATDP" in this parameter.
  383.  
  384.  
  385. access_number            This is the telephone number for the paging
  386.                          company's modem that receives alphanumeric
  387.                          messages.  THIS IS DIFFERENT FROM THE PAGER
  388.                          TELEPHONE NUMBER.  You may include dashes and
  389.                          comma's like any other modem phone number. 
  390.                          (A comma usually pauses 2 seconds - ie 9,444-4444)
  391.                          (See above for more information)
  392.  
  393.                          Note: For those paging carriers that require
  394.                          a specific password, this is where you put it.
  395.                          After the access phone number place the ^ hat
  396.                          character (shift 6) and then place the password.
  397.                          For example, if the paging carrier required the
  398.                          password of L23456, then the access_number string
  399.                          would be: access_number$="9,444-4444^L23456"
  400.  
  401.                          By putting "DIRECT" in this string, Power Page
  402.                          assumes a direct connection.  No dialing takes
  403.                          place and DTR is NEVER dropped.
  404.  
  405. pager_id                 This is usually the pager's phone number or 
  406.                          PIN number.  DO NOT INCLUDE ANY DASHES in this
  407.                          number.
  408.  
  409.                          You may send multiple pages with one phone call.
  410.                          You do this by separating the pager_id's and 
  411.                          messages by the ^ (hat - shift 6) character.  For
  412.                          example, if I wanted to send myself two messages,
  413.                          I would set pager_id="8260590^8260590" and the
  414.                          msg field to msg="This is message 1.^This is 
  415.                          message 2".  Note: that there had better be the
  416.                          same number of ^ characters in the pager_id 
  417.                          field as there is in the message field.
  418.                           
  419. max_chars_per_blk        This is the number of characters the paging 
  420.                          company allows per message block.  This number
  421.                          varies widely from company to company.  Some
  422.                          are as small as 60 characters and some are as
  423.                          big as 1000 characters.  The norms seem to be
  424.                          80 and 230 characters per block.  If the message
  425.                          you pass is bigger than the character per block
  426.                          limitation, Power Page automatically splits your
  427.                          message up into multiple blocks, so the recipient 
  428.                          gets the entire message. (Registered version only)
  429.                          However, he/she does get a different page for 
  430.                          each block. (See above for more information)
  431.  
  432. msg                      This is the message that goes to the pager.  The
  433.                          un-registered version truncates this message to
  434.                          40 characters.
  435.  
  436.                          Please note that you may send multiple messages
  437.                          separated by the ^ (hat - Shift 6) character.
  438.                          Please see pager_id description above for more
  439.                          information.  If you want to send the same
  440.                          message to the entire list of pagers, insert
  441.                          the single message and terminate it with ^^.
  442.                          (i.e. Msg$="Test Page^^")
  443.  
  444. debug_file               Normally, this parameter is NULL.  In the event
  445.                          you are having trouble successfully completing 
  446.                          a page, specify a valid file name for this
  447.                          parameter.  Power Page will append to the end
  448.                          of the file some information on where the 
  449.                          problem is.  This file will also help me to
  450.                          determine where the problem is if you want to 
  451.                          E-Mail me the file.
  452.  
  453. retmsg                   This is a string returned by Power Page telling 
  454.                          you what happened during the call.  See below
  455.                          for a complete description of the possible values
  456.                          in this string.  Make sure you pre-allocate 100
  457.                          bytes for this string BEFORE you make the function
  458.                          call.
  459.  
  460. line1                    This is the first line of the Power Page Window.
  461.                          If this parameter is NULL or empty, "Power Page"
  462.                          will be displayed.  It is up to you to add
  463.                          preceeding spaces in order to center the text.
  464.  
  465. line2                    This is the second line of the Power Page Window.
  466.                          If this parameter is NULL or empty, my copyright
  467.                          will be displayed.  It is up to you to add
  468.                          preceeding spaces in order to center the text.
  469.  
  470. line3                    This is the third line of the Power Page Window.
  471.                          If this parameter is NULL or empty, "Registerd
  472.                          Version" will be displayed on this line.  It is up
  473.                          to you to add preceeding spaces in order to center
  474.                          the text.
  475.  
  476. minimize                 If the first character in this string is "Y" then
  477.                          the power page window will not be displayed.  The
  478.                          window is minimized to an icon, so you will see
  479.                          the icon while it is active.  The icon disappears
  480.                          after the call is complete.
  481.  
  482.  
  483.  
  484. --------------------------------------------------------------
  485.  Return codes and strings for EITHER function
  486. --------------------------------------------------------------
  487.  
  488. RETURNS: 0 = Successful
  489.          >0 = Failure or partial failure
  490.  
  491. The possible values for the retmsg parameters are as follows:
  492.  
  493. With Return Code of 0: (Success)
  494.      Successful.
  495.  
  496. With Return Code of >0: (Failure)
  497.  
  498. Ret Code    Retmsg
  499.  1          Operator interrupted session.
  500.  2          Could not create window.
  501.  3          Could not create windows timer.
  502.  4          The number of pager id's does not match the number of messages.
  503.  5          OpenComm Error - The device identifier is invalid or unsupported.
  504.  6          OpenComm Error - The devices baud rate is unsupported.
  505.  7          OpenComm Error - Byte size error.
  506.  8          OpenComm Error - The default parameters are in error.
  507.  9          OpenComm Error - The hardware is not available
  508.                  (is locked by another device).
  509. 10          OpenComm Error - The function cannot allocate memory for the COM queues.
  510. 11          OpenComm Error - The device is not open.
  511. 12          OpenComm Error - The COM port is already open.
  512. 13          OpenComm Error - Unknown error.
  513. 14          OpenComm Error - Error on BuildCommDCB command.
  514. 15          OpenComm Error - Error on SetCommState command.
  515. 16          CloseComm Error.
  516. 17          Your modem on COMx did not respond to the following
  517.                  init string: <passed init string>
  518. 18          Timeout waiting for CONNECTion.
  519. 19          Lost Connection during call.
  520. 20          Timeout waiting for ID=.
  521. 21          Timeout waiting for goahead string.
  522. 22          Lost Connection during call.
  523. 23          Block was NAK'd five times.
  524. 24          XX Invalid Pager ID's - Bad List: XX XX .. XX .
  525.             Note: This error occurs if at least one of the pager ID's are
  526.                   invalid.  A pager could be invalid if it is an incorrect
  527.                   pager ID or the pager has been turned off - such as when
  528.                   a customer stops service.
  529.  
  530.                   Since Power Page supports sending several messages in
  531.                   a single phone call, Power Page will attempt to send
  532.                   all the messages that you have sent - even if one of
  533.                   pager numbers is no longer valid.
  534.  
  535.                   This error message will return the number of messages
  536.                   that were bad - along with the list of which messages
  537.                   failed.
  538.  
  539.                   For example, If I sent the following:
  540.                      pager_id$="8260590^6666666^8260590"
  541.                      msg$="One,One^Two,Two^Three,Three"
  542.                   and assuming 6666666 was not valid in the paging terminal,
  543.                   I would get the following return:
  544.  
  545.                   01 Invalid Pager ID's - Bad List: 02 .
  546.  
  547.                   The 02 refers to which message failed.                               
  548.             
  549. 25          The PowerPage function is not supported in the unregistered version.
  550. 26                You passed a zero length message.
  551. 27                You passed a zero block limit.
  552. 28          Returning with init error - The PowerPage DLL is busy
  553.  
  554. EXAMPLE calls
  555. -------------
  556.  
  557.   The setup and call from your favorite language would be similar to
  558.   how you would make a call to a Windows API (SDK) function.  Some
  559.   specific examples follow:
  560.  
  561. ---------------------------------------------------------------------
  562.     send_alpha_page() function examples
  563. ---------------------------------------------------------------------
  564.  
  565.   PowerBuilder Examples 
  566.   ---------------------
  567.   
  568.   Declare a Global External function as follows:
  569.       FUNCTION int send_alpha_page(ref string port, ref string baud, &
  570.                ref string modem_init_str, ref string modem_dial_str, &
  571.                ref string access_number, ref string pager_id, &
  572.                ref string max_chars_per_blk, ref string msg, &
  573.                ref string debug_file, ref char retmsg[100]) &
  574.                LIBRARY "POWERPG.DLL"
  575.  
  576.   A sample script to setup and send a page:
  577.      int rc
  578.      char retmsg[100]
  579.      string port,baud,modem_init_str,modem_dial_str
  580.      string access_number,pager_id,max_chars_per_blk,msg,debug_file
  581.  
  582.      port="COM1"
  583.      baud="300"
  584.      modem_init_str=""
  585.      modem_dial_str=""
  586.      access_number="799-0055"
  587.      pager_id="8260590"
  588.      max_chars_per_blk="80"
  589.      msg="Hello, This is a test page."
  590.      debug_file=""
  591.  
  592.      rc=send_alpha_page(port,baud,modem_init_str,modem_dial_str, &
  593.           access_number,pager_id,max_chars_per_blk,msg,debug_file,retmsg)
  594.  
  595.      MessageBox("Power Page Results",retmsg)
  596.  
  597.   
  598.   VISUAL BASIC or Microsoft Access Example
  599.   ----------------------------------------
  600.  
  601.   In the declarations area add the following line (put on one line):
  602.  
  603. Declare Function send_alpha_page Lib "POWERPG.DLL" (ByVal port$, ByVal baud$,
  604.         ByVal modem_init_str$, ByVal modem_dial_str$, ByVal access_number$, ByVal pager_id$,
  605.         ByVal max_chars_per_blk$, ByVal msg$, ByVal debug_file$, ByVal retmsg$) As Integer
  606.  
  607.  
  608.   A Sample script to setup and send a page:
  609.  
  610. port$ = "COM1"
  611. baud$ = "300"
  612. modem_init_str$ = ""
  613. modem_dial_str$ = ""
  614. access_number$ = "7990055"
  615. pager_id$ = "8260590"
  616. max_chars_per_blk$ = "80"
  617. msg$ = "Howdy partner."
  618. debug_file$ = ""
  619. retmsg$ = String$(100, 0)
  620.  
  621. Rem -- Put the following on one line:
  622. ret% = send_alpha_page(port$, baud$, modem_init_str$, modem_dial_str$, access_number$,
  623.         pager_id$, max_chars_per_blk$, msg$, debug_file$, retmsg$)
  624.  
  625. MsgBox retmsg$
  626.  
  627.  
  628.  
  629.   C or C++ Example (Tested using Visual C++ 1.5)
  630.   ----------------
  631.  
  632. int sample_function(void)
  633. {
  634.    char retmsg[100];
  635.    HINSTANCE lh;
  636.    int ret;
  637.    BOOL (FAR pascal *lpfn) (char far *,char far *,char far *,char far *,
  638.                             char far *,char far *,char far *,char far *,
  639.                             char far *, char far *);
  640.  
  641.    lh=LoadLibrary("POWERPG.DLL");
  642.    if(lh <= HINSTANCE_ERROR) {
  643.       MessageBox(0,"Could Not Load library","Return Status",MB_OK);
  644.       return(0);
  645.    }
  646.    lpfn=(BOOL (FAR pascal *)
  647.         (char far *,char far *,char far *,char far *, char far *,
  648.          char far *,char far *,char far *,char far *, char far *))
  649.         (GetProcAddress(lh,"send_alpha_page"));
  650.  
  651.    if(lpfn == 0) {
  652.       MessageBox(0,"Could Not Load address","Return Status",MB_OK);
  653.       return(0);
  654.    }
  655.  
  656.    ret=(*lpfn)("COM1","300","","","7990055","8260590","80",
  657.                "Hello, Test Page","",retmsg);
  658.  
  659.    FreeLibrary(lh);
  660.    MessageBox(0,retmsg,"Return Status",MB_OK);
  661.    return(0);
  662. }
  663.  
  664.  
  665.   FoxPro for Windows Example
  666.   --------------------------
  667.  
  668.   FoxPro does not allow the 10 required parameters to be passed to a DLL.  
  669.   Therefore, an alternative function has been provided in the DLL to 
  670.   combine 9 of the parameters into one separated by the verticle bar (|).
  671.   The function is called PowerPageCombined(char *parms, char *retmsg)
  672.  
  673.   The following example may explain:
  674.  
  675. * For testing purposes, make sure you don't reload FOXTOOLS a million times.
  676. SET LIBRARY TO
  677. * Now load it back in.
  678. SET LIBRARY TO d:\vfp\fOXTOOLS.FLL
  679.  
  680. * Register the PowerPage function via FOXTOOLS
  681. RN = RegFn("PowerPageCombined","@C@C","I","POWERPG.DLL")
  682.  
  683. * Initialize the variables
  684. retmsg=SPACE(100)
  685. parms="COM1|300|AT&F~||7990055|8260590|80|Sample Page|test.txt|"
  686.  
  687. *port|baud|initstring|dialstring|accessnumber|pagerId|maxchars|msg|debugfile
  688.  
  689. result = CallFn(RN,@parms, @retmsg)
  690. ?retmsg
  691.  
  692.  
  693.  
  694.   Borland Delphi Example
  695.   ----------------------
  696.  
  697. unit Pp;
  698.  
  699. interface
  700.  
  701. uses
  702.   SysUtils, WinTypes, WinProcs, Messages, Classes, Graphics, Controls,
  703.   Forms, Dialogs, StdCtrls;
  704.  
  705. type
  706.   TForm1 = class(TForm)
  707.     Button1: TButton;
  708.     procedure Button1Click(Sender: TObject);
  709.   private
  710.     { Private declarations }
  711.   public
  712.     { Public declarations }
  713.   end;
  714.  
  715. var
  716.   Form1: TForm1;
  717.  
  718.   implementation
  719.  
  720. {$R *.DFM}
  721.  
  722. function Send_Alpha_Page(Port: Pchar; Baud: pchar; ModemInitStr: pchar;
  723.          ModemDialStr: pchar; AccessNumber: pchar; PagerID: pchar;
  724.          MaxCharsPerBlk: pchar; Msg: pchar; DebugFile: pchar;
  725.          RetMsg: pchar): Smallint; far;
  726.          external 'POWERPG.DLL';
  727.  
  728. procedure TForm1.Button1Click(Sender: TObject);
  729. var
  730.   ret: smallint;
  731.   s: string;
  732.  
  733.   Port: pchar;
  734.   Baud: pchar;
  735.   ModemInitStr: pchar;
  736.   ModemDialStr: pchar;
  737.   AccessNumber: pchar;
  738.   PagerID: pchar;
  739.   MaxCharsPerBlk: pchar;
  740.   Msg: pchar;
  741.   DebugFile: pchar;
  742.   RetMsg: pchar;
  743.  
  744. begin
  745.  
  746.   Port := 'COM2';
  747.   Baud := '300';
  748.   ModemInitStr := '';
  749.   ModemDialStr := '';
  750.   AccessNumber := '4857948^000000';
  751.   PagerID := '9880006^9880006^9880006';
  752.   MaxCharsPerBlk := '80';
  753.   Msg := 'message1^message2^message3';
  754.   DebugFile := '';
  755.   RetMsg := StrAlloc(100);
  756.  
  757.   ret:= Send_Alpha_Page(Port,Baud,ModemInitStr,ModemDialStr,AccessNumber,
  758.         PagerID,MaxCharsPerBlk,Msg,DebugFile,RetMsg);
  759.  
  760.   s := StrPas(RetMsg);
  761.   MessageDlg(s, mtInformation,[mbOk], 0);
  762.   StrDispose(RetMsg);
  763. end;
  764.  
  765. end.
  766.  
  767.  
  768.   Paradox for Windows Example
  769.   ---------------------------
  770.  
  771.   Declare the following in the Uses() method of the form object
  772.   and place the following code in it:
  773.  
  774. Uses POWERPG
  775.    send_alpha_page(CPTR port, CPTR baud, CPTR modem_init_str, 
  776.                    CPTR modem_dial_str, CPTR access_number, CPTR pager_id,
  777.                    CPTR max_chars_per_blk, CPTR msg CPTR debug_file, 
  778.                    CPTR retmsg) CWORD
  779. EndUses
  780.  
  781. var
  782.    port String
  783.    baud String
  784.    modem_init_str String
  785.    modem_dial_str String
  786.    access_number String
  787.    pager_id String
  788.    max_chars_per_blk String
  789.    msg String
  790.    debug_file String
  791.    retmsg String
  792.    retVal SmallInt
  793. endvar
  794.  
  795. port = "COM1"
  796. baud = "300"
  797. modem_init_str = ""
  798. modem_dial_str = ""
  799. access_number = "7990055"
  800. pager_id = "8260590"
  801. max_chars_per_blk = "80"
  802. msg = "Howdy partner."
  803. debug_file = ""
  804. retmsg = Space(100)
  805.  
  806. retval=send_alpha_page(port, baud, modem_init_str, modem_dial_str,
  807.         access_number,pager_id, max_chars_per_blk, msg, debug_file, retmsg)
  808.  
  809. MsgInfo("Results",retmsg)
  810.  
  811.  
  812.   Objectview Example
  813.   ------------------
  814.  
  815. DECLARE FUNCTION send_alpha_page%(@port$,@baud$,@modem_init_str$, 
  816.                  @modem_dial_str$,@access_number$,@pager_id$,
  817.                  @max_chars_per_blk$,@msg$,@debug_file$, 
  818.                  @retmsg$) LIB "POWERPG.DLL send_alpha_page"
  819.  
  820. port$ = "COM1"
  821. baud$ = "300"
  822. modem_init_str$ = ""
  823. modem_dial_str$ = ""
  824. access_number$ = "7990055"
  825. pager_id$ = "8260590"
  826. max_chars_per_blk$ = "80"
  827. msg$ = "Howdy partner."
  828. debug_file$ = ""
  829. FOR I% = 1 to 100
  830.    retmsg$=retmsg$ + " "
  831. NEXT I
  832.  
  833. ret% = send_alpha_page(port$, baud$, modem_init_str$, modem_dial_str$, access_number$,
  834.         pager_id$, max_chars_per_blk$, msg$, debug_file$, retmsg$)
  835.  
  836. MESSAGEBOX(retmsg$,"Result",MB_OK)
  837.  
  838.   
  839.   Dbase for Windows Example
  840.   -------------------------
  841.  
  842.   EXTERN CINT send_alpha_page(CPTR *,CPTR *,CPTR *,CPTR *,CPTR *,
  843.                               CPTR *,CPTR *,CPTR *,CPTR *,CPTR *)
  844.   
  845.  
  846. * Initialize variables
  847. port="COM1"
  848. baud="300"
  849. modem_init_str=""
  850. modem_dial_str=""
  851. access_number="7990055"
  852. pager_id="8260590"
  853. max_chars_per_blk="80"
  854. msg="Howdy partner."
  855. debug_file=""
  856. retmsg=SPACE(100)
  857.  
  858. retval=send_alpha_page(port, baud, modem_init_str, modem_dial_str,
  859.         access_number,pager_id, max_chars_per_blk, msg, debug_file, retmsg)
  860.  
  861. ?retmsg
  862.  
  863.  
  864. ---------------------------------------------------------------------
  865.     PowerPage() function examples
  866. ---------------------------------------------------------------------
  867.  
  868.  
  869.   PowerBuilder Examples
  870.   ---------------------
  871.   
  872.   Declare a Global External function as follows:
  873.       FUNCTION int PowerPage(ref string port, ref string baud, &
  874.                ref string modem_init_str, ref string modem_dial_str, &
  875.                ref string access_number, ref string pager_id, &
  876.                ref string max_chars_per_blk, ref string msg, &
  877.                ref string debug_file, ref char retmsg[100], &
  878.                ref string line1, ref string line2, ref string line3, &
  879.                ref string minimize) &
  880.                LIBRARY "POWERPG.DLL"
  881.  
  882.   A sample script to setup and send a page:
  883.      int rc
  884.      char retmsg[100]
  885.      string port,baud,modem_init_str,modem_dial_str
  886.      string access_number,pager_id,max_chars_per_blk,msg,debug_file
  887.      string line1,line2,line3,minimize
  888.  
  889.      port="COM1"
  890.      baud="300"
  891.      modem_init_str=""
  892.      modem_dial_str=""
  893.      access_number="799-0055"
  894.      pager_id="8260590^8265555"
  895.      max_chars_per_blk="80"
  896.      msg="Hello, This is a test page.^This is a second message"
  897.      debug_file=""
  898.      line1=""
  899.      line2="   SuperQuick Software"
  900.      line3="  "
  901.      minimize="Y"
  902.  
  903.      rc=PowerPage(port,baud,modem_init_str,modem_dial_str, &
  904.           access_number,pager_id,max_chars_per_blk,msg,debug_file,retmsg, &
  905.           line1,line2,line3,minimize)
  906.  
  907.      MessageBox("Power Page Results",retmsg)
  908.  
  909.   
  910.   VISUAL BASIC or Microsoft Access Example
  911.   ----------------------------------------
  912.  
  913.   In the declarations area add the following line (put on one line):
  914.  
  915. Declare Function PowerPage Lib "POWERPG.DLL" (ByVal port$, ByVal baud$,
  916.         ByVal modem_init_str$, ByVal modem_dial_str$, ByVal access_number$,
  917.         ByVal pager_id$, ByVal max_chars_per_blk$, ByVal msg$,
  918.         ByVal debug_file$, ByVal retmsg$, ByVal line1$, ByVal line2$,
  919.         ByVal line3$, ByVal minimize$ ) As Integer
  920.  
  921.  
  922.   A Sample script to setup and send a page:
  923.  
  924. port$ = "COM1"
  925. baud$ = "300"
  926. modem_init_str$ = ""
  927. modem_dial_str$ = ""
  928. access_number$ = "7990055"
  929. pager_id$ = "8260590^8261234"
  930. max_chars_per_blk$ = "80"
  931. msg$ = "Howdy partner.^This is a second message"
  932. debug_file$ = ""
  933. retmsg$ = String$(100, 0)
  934. line1$=""
  935. line2$="   SuperQuick Software"
  936. line3$="  "
  937. minimize$="Y"
  938.  
  939. Rem -- Put the following on one line:
  940. ret% = PowerPage(port$, baud$, modem_init_str$, modem_dial_str$, access_number$,
  941.                  pager_id$, max_chars_per_blk$, msg$, debug_file$, retmsg$,
  942.                  line1$,line2$,line3$,minimize$)
  943.  
  944. MsgBox retmsg$
  945.  
  946.   FoxPro for Windows Examples
  947.   ---------------------------
  948.   FoxPro does not allow the 14 required parameters to be passed to a DLL.  
  949.   Therefore, an alternative function has been provided in the DLL to 
  950.   combine 13 of the parameters into one separated by the verticle bar (|).
  951.   The function is called PowerPageCombined(char *parms, char *retmsg)
  952.  
  953.   Note: The PowerPageCombined() function supports both the shorter
  954.         send_alpha_page() parameters and the long PowerPage() parameters.
  955.  
  956.   The following example may explain:
  957.  
  958. * For testing purposes, make sure you don't reload FOXTOOLS a million times.
  959. SET LIBRARY TO
  960. * Now load it back in.
  961. SET LIBRARY TO d:\vfp\fOXTOOLS.FLL
  962.  
  963. * Register the PowerPage function via FOXTOOLS
  964. RN = RegFn("PowerPageCombined","@C@C","I","POWERPG.DLL")
  965.  
  966. * Initialize the variables
  967. retmsg=SPACE(100)
  968. parms="COM1|300|AT&F~||7990055|8260590|80|Sample Page|test.txt|
  969.        My Program|SuperRad Inc.| |Y|"
  970.  
  971. *port|baud|initstring|dialstring|accessnumber|pagerId|maxchars|msg|debugfile|
  972. *line1|line2|line3|minimize
  973. result = CallFn(RN,@parms, @retmsg)
  974. ?retmsg
  975.  
  976.  
  977. LEGAL MATTERS
  978. -------------
  979.  
  980.  Of course the usual disclaimers still apply.  We are not 
  981.  responsible for anything at all.  Nothing.  Even if we are held
  982.  responsible, the limit of our liability is the licensing fees
  983.  you paid. 
  984.  
  985.  
  986. SHAREWARE LICENSE - END USER
  987. ----------------------------
  988.  
  989.  The Power Page software is not and has never been public
  990.  domain software, nor is it free software. 
  991.  
  992.  Non-licensed users are granted a limited license to use our
  993.  software on a 20-day trial basis for the purpose of determining
  994.  whether the software is suitable for their needs.  Any use
  995.  of our software, except for the initial 20-day trial, requires
  996.  registration.  The use of unlicensed copies of our software,
  997.  outside of the initial 20-day trial, by any person, business,
  998.  corporation, government agency or any other entity is
  999.  strictly prohibited. 
  1000.  
  1001.  
  1002.  SHAREWARE LICENSE - FOR DISTRIBUTION OF SHAREWARE FILES,
  1003.  USER GROUPS, BBS's, ONLINE SERVICES, SHAREWARE VENDORS, and
  1004.  OTHERS
  1005.  
  1006.  A limited license is granted to copy and distribute our
  1007.  shareware software only for the trial use of others, subject to
  1008.  the following limitations:
  1009.  
  1010.   1)    The software must be copied in unmodified form, complete
  1011.         with the file containing this license information.
  1012.  
  1013.   2)    The full machine-readable documentation must be included
  1014.         with each copy.
  1015.  
  1016.   3)    Our software may not be distributed in conjunction with
  1017.         any other product with out a specific license to do so
  1018.         from Ron Tanner.
  1019.  
  1020.   4)    Vending of our software products in retail stores (by
  1021.         "shareware rack vendors") is specifically prohibited
  1022.         without prior written authorization.
  1023.  
  1024.   5)    No fee, charge, or other compensation may be requested
  1025.         or accepted, except as authorized below:
  1026.  
  1027.      A) Non-profit user groups may distribute copies of the our
  1028.         products to their members, subject to the above
  1029.         conditions, without specific permission.  Non-profit
  1030.         groups may collect a disk duplication fee not to exceed
  1031.         five dollars.
  1032.  
  1033.      B) Operators of electronic bulletin board systems (sysops)
  1034.         may make our products available for downloading only as
  1035.         long as the above conditions are met.  An overall or
  1036.         time-dependent charge for the use of the bulletin board
  1037.         system is permitted as long as there is not a specific
  1038.         charge for the download of our software.
  1039.  
  1040.      C) Mail-order vendors of shareware software
  1041.         may distribute our products, subject to the
  1042.         above conditions, without specific permission.
  1043.         Vendors may charge a disk duplication and handling
  1044.         fee, which, when pro-rated to each individual product,
  1045.         may not exceed eight dollars.
  1046.  
  1047.  
  1048.  LICENSED COPIES OF OUR SOFTWARE ARE GOVERNED BY THE FOLLOWING:
  1049. ---------------------------------------------------------------
  1050.  
  1051.  THIS SOFTWARE IS NOT FOR SALE: The software  is 
  1052.  subject to the following license terms and conditions.  
  1053.  
  1054.  SOFTWARE LICENSE granted, when required fees paid,
  1055.  by Ron Tanner, with its mailing address at 4955 E. Preserve Court,
  1056.  Greenwood Village, CO  80121.  The software contained in this 
  1057.  package is licensed to you as the end user.  It is not sold.
  1058.  
  1059.  LICENSE:
  1060.          1.0  The software contained in this package 
  1061.  (hereafter referred to as "the Software") is copyrighted 
  1062.  material owned by Ron Tanner.  Payment of the single copy
  1063.  license fee authorizes one named person to use the Software
  1064.  on one computer provided this copyright is not violated and
  1065.  provided the rules outlined herein are observed.
  1066.  
  1067.          1.1  One person may use the Software on any 
  1068.  single computer. This license can be transferred only once 
  1069.  in any twenty-four hour period. You must pay for additional 
  1070.  copies of the Software if more than one person uses it at 
  1071.  one time, or if the Software is used on two or more 
  1072.  computers. Neither concurrent use on two or more 
  1073.  computers, nor use by more than a single individual on a 
  1074.  network is permitted without authorization and payment of 
  1075.  other license fees.
  1076.  
  1077.          1.2  You may make copies of the software for 
  1078.  backup purposes, as long as all such copies, along with 
  1079.  the original, are kept in your possession or control.
  1080.  
  1081.          1.3  You may not make any changes or modifications to
  1082.  the Software, including, but not limited to, decompiling,
  1083.  disassembling, or otherwise reverse engineering it.  You may
  1084.  not rent or lease it to others.  You may not use it on a
  1085.  computer network if more than one user can use it on more than
  1086.  one computer during any one twenty-four hour span of time.
  1087.  
  1088.  
  1089.   LIMITED WARRANTY
  1090. ------------------
  1091.  
  1092.   Ron Tanner guarantees your satisfaction with this
  1093.   product for a period of 90 days from the date of original
  1094.   purchase.  If you are unsatisfied with the product
  1095.   within that time period, return the package in salable
  1096.   condition to the place of purchase for a full refund.
  1097.  
  1098.   Ron Tanner warrants that all disks provided are
  1099.   free from defects in material and workmanship, assuming
  1100.   normal use, for a period of 90 days from the date of
  1101.   purchase.
  1102.  
  1103.   Ron Tanner warrants that the program will perform
  1104.   in substantial compliance with the documentation supplied
  1105.   with the software product.  If a significant defect in
  1106.   the product is found, the purchaser may return the
  1107.   product for a refund.  In no event will such a refund
  1108.   exceed the purchase price of the product.
  1109.  
  1110.  
  1111.   EXCEPT AS PROVIDED ABOVE, RON TANNER DISCLAIMS ALL
  1112.   WARRANTIES, EITHER EXPRESS OR IMPLIED, INCLUDING, BUT NOT
  1113.   LIMITED TO IMPLIED WARRANTIES OF MERCHANTABILITY AND
  1114.   FITNESS FOR A PARTICULAR PURPOSE, WITH RESPECT TO THE
  1115.   PRODUCT.  SHOULD THE PROGRAM PROVE DEFECTIVE, THE
  1116.   PURCHASER ASSUMES THE RISK OF PAYING THE ENTIRE COST OF
  1117.   ALL NECESSARY SERVICING, REPAIR, OR CORRECTION AND ANY
  1118.   INCIDENTAL OR CONSEQUENTIAL DAMAGES.  IN NO EVENT WILL
  1119.   RON TANNER BE LIABLE FOR ANY DAMAGES WHATSOEVER
  1120.   (INCLUDING WITHOUT LIMITATION DAMAGES FOR LOSS OF
  1121.   BUSINESS PROFITS, BUSINESS INTERRUPTION, LOSS OF BUSINESS
  1122.   INFORMATION AND THE LIKE) ARISING OUT OF THE USE OR THE
  1123.   INABILITY TO USE THIS PRODUCT EVEN IF RON TANNER
  1124.   HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
  1125.  
  1126.   Use of this product for any period of time constitutes
  1127.   your acceptance of this agreement and subjects you to its
  1128.   contents.
  1129.  
  1130.  
  1131.   TRADEMARKS
  1132. ------------
  1133.  
  1134.   Microsoft and MS-DOS are registered trademarks of
  1135.   Microsoft Corporation.
  1136.   Windows is a trademark of Microsoft Corporation.
  1137.  
  1138.  
  1139. Revision History
  1140. ----------------
  1141.  
  1142. 1.07 - 17 Apr 1995
  1143.  
  1144. There was a bug when sending multiple messages.  If you sent more than
  1145. two messages at a time, you would get a message saying the number of pager
  1146. id parameters didn't match the number of message parameters.  This was
  1147. corrected.
  1148.  
  1149. 1.08 - 20 Apr 1995
  1150.  
  1151. When sending multiple messages in a single call, and one of the messages
  1152. contained a bad pager ID (customer cancelled his service), the remaining
  1153. messages would not be sent.  I changed the way this worked.  All the messages
  1154. are attempted and a list is returned on which ones failed - if any.
  1155. (See return codes above for more information)
  1156.  
  1157. 1.09 - 8 May 1995
  1158.  
  1159. Sometimes you want to send the same message to a group.  Before this version
  1160. you had to send the list of pagers in page_id (i.e. 8254444^8254445^9234444)
  1161. and you also had to repeat the message the same number of times
  1162. (i.e. Test Page^Test Page^Test page).  The msg$ string now supports the 
  1163. use of ^^ which indicates to Power page to send the same string to every
  1164. pager in the list. (i.e. Test Page^^)
  1165.  
  1166. Power Page replaces the ^ with Nulls as it works with it.  In prior versions
  1167. this would modify the actual string passed by the application so when the
  1168. function returned, the string wasn't the same as before.  This caused some
  1169. confusion - especially for someone who wanted to re-submit the same string
  1170. again.  Power Page now allocates its own work space for the msg$ and 
  1171. pager_id$ strings.
  1172.  
  1173. 1.10 - 10 May 1995
  1174.  
  1175. Added the DIRECT connect capability.  This is done by putting the string
  1176. "DIRECT" into the access_number$ variable.  Added Version to the resource
  1177. file.  This can be read by using the file manager and ALT-ENTER which
  1178. shows DLL properties.  This is also used by the Setup command to verify
  1179. program/dll version collisions.  Added Error message 28 - DLL is busy.
  1180. This was done as the DLL is not protected fro re-entrancy and would blow
  1181. up if the DLL function was called again prior to completing the call.  Code
  1182. was added within the DLL to set and clear the status.  The CloseComm 
  1183. error checking was removed.  If more than one com port was opened from
  1184. another application, the CloseComm() Windows SDK would return an error.
  1185. Therefore, error checking was removed.  Also, fixed the access_number$ 
  1186. password option so that if you put a ^ at the end of the string and then
  1187. no password, it will eliminate the sending of the 000000 after the PG1.
  1188.  
  1189. 1.11 - 23 May 1995
  1190.  
  1191. Changed the run minimized function to run more in the background rather
  1192. than getting the focus.  Changed the setmodem function to be multitasking
  1193. and not hold the machine while waiting for pauses.  Merged DOS build into
  1194. one source module to make it easier to maintain.
  1195.  
  1196.  
  1197.